# 考点：逻辑分析
"""
题目描述
记账本上记录了若干条多国货币金额，需要转换成人民币分（fen），汇总后输出。
每行记录一条金额，金额带有货币单位，格式为数字+单位，可能是单独元，或者单独分，或者元与分的组合。
要求将这些货币全部换算成人民币分（fen）后进行汇总，汇总结果仅保留整数，小数部分舍弃。
元和分的换算关系都是1:100，如下：

1CNY=100fen（1元=100分）
1HKD=100cents（1港元=100港分）
1JPY=100sen（1日元=100仙）
1EUR=100eurocents（1欧元=100欧分）
1GBP=100pence（1英镑=100便士）
汇率表如下：

即：100CNY = 1825JPY = 123HKD = 14EUR = 12GBP

CNY JPY HKD EUR GBP
100	1825	123	14	12
输入描述
第一行输入为N，N表示记录数。0<N<100

之后N行，每行表示一条货币记录，且该行只会是一种货币。

输出描述
将每行货币转换成人民币分（fen）后汇总求和，只保留整数部分。
输出格式只有整数数字，不带小数，不带单位。

示例1
输入

1
100CNY
12

输出

10000
1
说明
100CNY转换后是10000fen，所以输出结果为10000

示例2
输入

1
3000fen
12

输出

3000
1
说明
3000fen，结果就是3000

示例3
输入

1
123HKD
12

输出

10000
1
说明
HKD与CNY的汇率关系是123:100，所以换算后，输出结果为10000

示例4
输入

2
20CNY53fen
53HKD87cents
123

输出

6432
1
说明
20元53分 + 53港元87港分，换算成人民币分后汇总，为6432

解题思路
这题主要是拆解字符串，题目本身不难，按照题意写好分支判断即可。如果觉得代码复杂，可以考虑使用正则表达式来做。

作者：左雀斑
链接：https://www.nowcoder.com/discuss/686495923530211328?sourceSSR=search
来源：牛客网
"""

'''
def exChange(unit):
    # 根据货币单位返回其转换为人民币分的汇率
    if unit == "CNY":
        return 100.0  # 人民币
    elif unit == "JPY":
        return 100.0 / 1825 * 100  # 日元
    elif unit == "HKD":
        return 100.0 / 123 * 100  # 港元
    elif unit == "EUR":
        return 100.0 / 14 * 100  # 欧元
    elif unit == "GBP":
        return 100.0 / 12 * 100  # 英镑
    elif unit == "fen":
        return 1.0  # 人民币分
    elif unit == "cents":
        return 100.0 / 123  # 港元分
    elif unit == "sen":
        return 100.0 / 1825  # 日元分
    elif unit == "eurocents":
        return 100.0 / 14  # 欧元分
    elif unit == "pence":
        return 100.0 / 12  # 英镑分
    else:
        return 0.0  # 无效单位返回0


def main():
    n = int(input())  # 读取记录数
    totalFen = 0.0  # 汇总结果

    # 处理每一条货币记录
    for _ in range(n):
        record = input()  # 读取每一行的记录
        amount = 0  # 用于保存金额
        unit = ""  # 保存单位

        # 遍历当前行，逐个提取金额和单位
        for j, c in enumerate(record):
            if c.isdigit():
                amount = amount * 10 + int(c)  # 构建数字
            else:
                unit += c  # 构建货币单位

            # 当遇到完整的金额+单位时进行换算
            if j == len(record) - 1 or (j + 1 < len(record) and record[j + 1].isdigit() and unit):
                totalFen += amount * exChange(unit)  # 计算并累加到总数
                amount = 0  # 重置金额
                unit = ""  # 清空单位

    # 输出汇总结果，只保留整数部分
    print(int(totalFen))


if __name__ == "__main__":
    main()
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455

'''


'''
该题目属于 字符串处理 和 哈希映射 结合的类型问题。核心思想是通过字符串解析和单位转换将不同货币转换为统一的人民币分(fen)，然后进行汇总。它可以归为 字符串处理 和 数学计算 类问题。

解题思路
解析输入：对于每一行输入的货币记录，我们首先需要从字符串中提取出金额和货币单位。货币单位可能是元（CNY、JPY等）或者分（fen、cents等），因此需要精确提取。
建立汇率表：使用哈希映射 (在不同语言中分别为 map、HashMap 或 dict) 来存储每种货币单位相对于人民币分的换算关系。
转换为人民币分：根据提取的货币单位，通过汇率表将其转换为人民币分(fen)。
汇总求和：处理完所有货币记录后，对其进行汇总，只保留整数部分，舍弃小数。
输出结果：最终结果只需要输出整数形式的总和。
代码大致描述
初始化汇率表：将所有相关货币的单位转换汇率存入一个哈希映射（例如，"CNY": 100.0，"JPY": (100 / 1825.0) * 100）。
解析字符串：遍历每一行货币记录，提取出货币单位和数值。
查找汇率并进行转换：利用提取的货币单位从哈希映射中查找对应汇率，并将货币值转换为人民币分。
结果汇总：将转换后的分值进行累加，输出结果。
时间复杂度
时间复杂度为 O(N)，其中 N 是货币记录的条数。因为每一条记录的处理时间为常数时间级别，包括字符串的解析和汇率的查找。

空间复杂度
空间复杂度为 O(1)，除去输入数据以外，哈希映射的大小是固定的，汇率表中只有少量固定货币单位。

作者：code5bug
链接：https://www.nowcoder.com/discuss/667035184092487680?sourceSSR=search
来源：牛客网
'''
def init_exchange():
    # 初始化汇率字典
    exchange = {
        "fen": 1.0,
        "CNY": 100.0,
        "JPY": (100.0 / 1825.0) * 100,
        "sen": (100.0 / 1825.0),
        "HKD": (100.0 / 123.0) * 100,
        "cents": (100.0 / 123.0),
        "EUR": (100.0 / 14.0) * 100,
        "eurocents": (100.0 / 14.0),
        "GBP": (100.0 / 12.0) * 100,
        "pence": (100.0 / 12.0)
    }
    return exchange

def process_input(line, exchange):
    length = len(line)
    result = 0
    i = 0

    while i < length:
        num = 0
        unit = ""

        # 解析数字部分
        while i < length and line[i].isdigit():
            num = num * 10 + int(line[i])
            i += 1

        # 解析货币单位部分
        while i < length and line[i].isalpha():
            unit += line[i]
            i += 1

        # 检查货币单位是否在字典中
        if unit in exchange:
            result += num * exchange[unit]
        else:
            print(f"Error: Unknown currency unit: {unit}")
            return 0  # 遇到未知货币单位时可以处理错误

    return result

def main():
    # 输入记录数
    n = int(input())

    # 初始化汇率
    exchange = init_exchange()

    # 处理每条记录
    for _ in range(n):
        line = input()
        result = process_input(line, exchange)
        print(int(result))  # 输出时转换为整型

if __name__ == "__main__":
    main()



